require('es6-promise').polyfill()
import axios from 'axios'
import Qs from 'qs'

export const Axios = axios.create({
    baseURL:  window.config['ApiBaseURL'],
    timeout: window.config['AxiosTimeout'],
    //config里面有这个transformRquest，这个选项会在发送参数前进行处理。
    //这时候我们通过Qs.stringify转换为表单查询参数
    transformRequest: [function (data) {
        data = Qs.stringify(data);
        return data;
    }],
    //设置Content-Type
    headers:{'Content-Type':'application/x-www-form-urlencoded'}
})

//POST传参序列化(添加请求拦截器)
// 在发送请求之前做某件事
Axios.interceptors.request.use(config => {
    // 设置以 form 表单的形式提交参数，如果以 JSON 的形式提交表单，可忽略
    // if(config.method  === 'post'){
    //     // JSON 转换为 FormData
    //     const formData = new FormData();
    //     Object.keys(config.data).forEach(key => formData.append(key, config.data[key]));
    //     config.data = formData;
    // }

    // 下面会说在什么时候存储 token
    if (localStorage.token) {   
        config.headers.token = localStorage.token;
    }
    return config;
},error =>{
    console.log("错误的传参", 'fail');
    return Promise.reject(error);
})

export default {
    install(Vue) {
        Object.defineProperty(Vue.prototype, '$http', {value: Axios});
    }
}